home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / windows5 / winnet.zip / DRIVERS.DOC < prev    next >
Text File  |  1990-08-16  |  21KB  |  584 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                  User documentation for the packet driver collection
  8.                                    Russell Nelson
  9.                                  Clarkson University
  10.                                   Potsdam, NY 13676
  11.                               nelson@clutx.clarkson.edu
  12.  
  13.  
  14.           The purpose of the packet drivers
  15.  
  16.                Every PC Ethernet board is different.  The 3c501 was, for
  17.           some time, the most popular board, and would have become the
  18.           defacto standard but for its poor performance.  By the time 3Com
  19.           created a board with acceptable performance, so had many others,
  20.           and 3Com lost its lead.  FTP Software, in order to support each
  21.           of these boards without losing its collective mind, created the
  22.           Packet Driver Spec (PDS).
  23.  
  24.                Some boards use DMA, programmed I/O, shared memory, and/or
  25.           bus mastering.  The PDS masks the differences between these
  26.           boards by defining a software interface to the boards.  This
  27.           software interface is a software interrupt in the range between
  28.           0x60 (hex) and 0x80.
  29.  
  30.  
  31.           Document conventions
  32.  
  33.                All numbers in this document are given in C-style
  34.           representation.  Decimal is expressed as 11, hexadecimal is
  35.           expressed as 0x0B, octal is expressed as 013.  All reference to
  36.           network hardware addresses (source, destination and multicast)
  37.           and demultiplexing information for the packet headers assumes
  38.           they are represented as they would be in a MAC-level packet
  39.           header being passed to the send_pkt() function.
  40.  
  41.  
  42.           Using the packet drivers
  43.  
  44.                The packet driver must be installed prior to use.  Since
  45.           each packet driver takes only approximately 1800 bytes, this is
  46.           best done in your autoexec.bat.  Since the Ethernet boards
  47.           typically have jumpers on board, the packet driver must be
  48.           informed of the values of these jumpers (auto-configure is
  49.           possible, but can disturb other boards).  The first parameter
  50.           is the software interrupt used to communicate with the packet
  51.           driver.  And again, because each board is different, the rest of
  52.           the parameters will be different.
  53.  
  54.           All parameters must be specified in C-style representation.
  55.           Decimal is expressed as 11, hexadecimal is expressed as 0x0B,
  56.           octal is expressed as 013.  Any numbers that the packet driver
  57.           prints will be in the same notation.
  58.  
  59.           Before installing the packet driver, you must choose a software
  60.           interrupt number in the range between 0x60 and 0x80.  Some of
  61.           these interrupts are used for other purposes, so your first
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.           choice may not work.  See Appendix A for the section of Ralf
  69.           Brown's interrupt list between 0x60 and 0x80.
  70.  
  71.           Running a packet driver with no specifications will give a
  72.           usage message.  The parameters for each packet driver are
  73.           documented below.
  74.  
  75.           Most drivers can now also be used in a PROM boot environment,
  76.           see PROMBOOT.NOT for how to use -d and -n options for that
  77.           purpose.
  78.  
  79.           The -w switch is used for Windows.  Install the packet driver
  80.           before running MS-Windows.
  81.  
  82.           3Com 3C501
  83.  
  84.                usage: 3C501 [-n] [-d] [-w] packet_int_no [int_no
  85.           [io_addr]]
  86.  
  87.                The 3c501 driver requires two additional parameters -- the
  88.           hardware interrupt number and the I/O address.  The defaults are
  89.           3 and 0x300.
  90.  
  91.  
  92.           3Com 3C503
  93.  
  94.                usage: 3C503 [-n] [-d] [-w] packet_int_no [int_level(2-5)
  95.           [io_addr [cable_type]]]
  96.  
  97.                The 3c503 driver requires three additional parameters --
  98.           the hardware interrupt number, the I/O address, and the cable
  99.           type.  The 3c503 can be attached to thick or thin Ethernet
  100.           cables, and the selection is made in software.  The cable type
  101.           parameter should be zero for thick, and one for thin.  The
  102.           defaults are 2, 0x300, and 0 (thin).  The 3c503 uses shared
  103.           memory whose address is set by jumpers, but the software can ask
  104.           the board what the address is.
  105.  
  106.  
  107.           3Com 3c505
  108.  
  109.                usage: 3c505 [-n] [-d] [-w] packet_int_no [int_no [io_addr
  110.           [base_addr]]]
  111.  
  112.                The 3c505 driver requires three additional parameters --
  113.           the hardware interrupt number, the I/O address, and the memory
  114.           base address.  The defaults are 2 and 0x300 and 0xd000.
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.           3Com 3c523
  122.  
  123.                usage: 3c523 [-n] [-d] [-w] packet_int_no [int_no [io_addr
  124.           [base_addr]]]
  125.  
  126.                The 3c523 driver requires three additional parameters --
  127.           the hardware interrupt number, the I/O address, and the memory
  128.           base address.  The defaults are 3 and 0x300 and 0xc000.
  129.  
  130.  
  131.           ARCNET
  132.  
  133.                usage: arcnet [-n] [-d] [-w] packet_int_no [int_no
  134.           [io_addr [base_addr]]]
  135.  
  136.                The ARCNET driver requires three additional parameters --
  137.           the hardware interrupt number, the I/O address, and the memory
  138.           base address.  The defaults are 5 and 0x2e0 and 0xd800.  Note
  139.           that a packet driver client must specifically support ARCNET.
  140.           The only known client is Phil Karn's (KA9Q) networking package,
  141.           NOS.
  142.  
  143.  
  144.           AT&T
  145.  
  146.                usage: at&t [-n] [-d] [-w] packet_int_no [int_no [io_addr
  147.           [base_addr]]]
  148.  
  149.                The AT&T driver requires three additional parameters --
  150.           the hardware interrupt number, the I/O address, and the memory
  151.           base address.  The defaults are 2 and 0x360 and 0xd000.  This
  152.           driver supports the StarLAN 1, StarLAN 10 NAU, EN100 and StarLAN
  153.           Fiber NAU.
  154.  
  155.  
  156.           IBM Token Ring
  157.  
  158.                usage: ibmtoken [-n] [-d] [-w] packet_int_no [adapter_no]
  159.  
  160.                The IBM Token Ring packet driver requires one additional
  161.           parameters -- the adapter number.  The default is zero.  See
  162.           IBMTOKEN.DOC for more information.
  163.  
  164.  
  165.           Novell IPX
  166.  
  167.                usage: ipxpkt [-n] [-d] [-w] packet_int_no
  168.  
  169.                The ipxpkt packet driver simulates Ethernet on Novell IPX
  170.           protocol.
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.           BICC Data Networks' ISOLAN 4110 ethernet
  178.  
  179.                usage: isolan [-n] [-d] [-w] packet_int_no [int_no
  180.           [base_addr]]
  181.  
  182.                The BICC Isolan requires three additional parameters --
  183.           the hardware interrupt number and the memory base address.  The
  184.           defaults are 2 and 0xb800h.
  185.  
  186.  
  187.           Netbios
  188.  
  189.                usage: nb [-n] [-d] [-w] packet_int_no ip.ad.dr.ess
  190.           [receive queue size]
  191.  
  192.                The netbios packet driver transports IP packets over
  193.           NetBIOS.
  194.  
  195.  
  196.           Novell ne1000
  197.  
  198.                usage: ne1000 [-n] [-d] [-w] packet_int_no [int_no
  199.           [io_addr]]
  200.  
  201.                The ne1000 driver requires two additional parameters --
  202.           the hardware interrupt number and the I/O address.  The defaults
  203.           are 3 and 0x300.
  204.  
  205.  
  206.           Novell ne2000
  207.  
  208.                usage: ne2000 [-n] [-d] [-w] packet_int_no [int_no
  209.           [io_addr]]
  210.  
  211.                The ne2000 driver requires two additional parameters --
  212.           the hardware interrupt number and the I/O address.  The defaults
  213.           are 2 and 0x300.
  214.  
  215.  
  216.           Racal/Interlan (Formerly Interlan) NI5010
  217.  
  218.                usage: NI5010 [-n] [-d] [-w] packet_int_no [int_no
  219.           [io_addr]]
  220.  
  221.                The NI5010 driver requires two additional parameters --
  222.           the hardware interrupt number and the I/O address.  The defaults
  223.           are 3 and 0x300.
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.           Racal/Interlan (Formerly Micom-Interlan) NI5210
  231.  
  232.                usage: ni5210 [-n] [-d] [-w] packet_int_no [int_no
  233.           [io_addr [base_addr]]]
  234.  
  235.                The NI5210 driver requires three additional parameters --
  236.           the hardware interrupt number, the I/O address, and the memory
  237.           base address.  The defaults are 2 and 0x360 and 0xd000.  Note
  238.           that Interlan sets the default memory base to 0xa000, which is
  239.           brain-damaged, because that area of memory is specifically
  240.           reserved for video adapters, and in fact the EGA and VGA use
  241.           it.
  242.  
  243.  
  244.           Racal/Interlan NI6510
  245.  
  246.                usage: ni6510 [-n] [-d] [-w] packet_int_no [int_no
  247.           [io_addr]]
  248.  
  249.                The ni6510 driver has two additional parameters -- the
  250.           hardware interrupt number and the I/O address.  The defaults are
  251.           2 and auto-sense.  These parameters do not need to be set unless
  252.           the auto-sense routine fails, or otherwise disrupts operation of
  253.           your PC.
  254.  
  255.  
  256.           Racal-Interlan (Formerly Micom-Interlan) NI9210
  257.  
  258.                usage: ni9210 [-n] [-d] [-w] packet_int_no [int_no
  259.           [io_addr [base_addr]]]
  260.  
  261.                The ni9210 driver requires three additional parameters --
  262.           the hardware interrupt number, the I/O address, and the memory
  263.           base address.  The defaults are 2 and 0x360 and 0xd000.
  264.  
  265.  
  266.           SLIP8250
  267.  
  268.                usage: SLIP8250 [-n] [-d] [-w] packet_int_no [-h]
  269.           [driver_class] [int_no]
  270.                   [io_addr] [baud_rate] [send_buf_size] [recv_buf_size]
  271.                   The driver_class should be SLIP, KISS, AX.25, or a
  272.                   number.
  273.  
  274.                The SLIP8250 driver is not strictly an Ethernet adapter,
  275.           however some software packages (such as KA9Q's NET and NCSA
  276.           Telnet) support Serial Line IP (SLIP).  SLIP must be specially
  277.           supported because it doesn't use ARP and has no hardware
  278.           addresses prepended to its packets.  The PDS is not clear on
  279.           this, but the packet driver does the SLIP encoding.  The
  280.           parameters are as follows.  The -h flag is included if you wish
  281.           to use hardware handshaking (the packet driver will then suspend
  282.           the transmission of characters while CTS is low).  The
  283.           driver_class is the class that is returned to a client of the
  284.           packet driver spec in the driver_info call.  The int_no is the
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.           hardware interrupt number, defaults to 4 (COM1).  The io_addr is
  292.           the hardware I/O address, defaults to 0x3f8 (COM1).  The
  293.           baud_rate defaults to 4800 baud.  The send_buf_size and
  294.           recv_buf_size default to 3000 each.
  295.  
  296.  
  297.           Tiara Lancard
  298.  
  299.                usage: tiara [-n] [-d] [-w] packet_int_no [int_no
  300.           [io_addr]]
  301.  
  302.                The Tiara driver runs the Tiara LANCARD/E cards, both
  303.           eight and
  304.           sixteen bit cards.  The Tiara driver requires two additional
  305.           parameters,
  306.           the hardware interrupt number, and the I/O port.
  307.  
  308.           Western Digital WD8003 E EBT EB ET/A and E/A
  309.  
  310.                usage: WD8003E [-n] [-d] [-w] packet_int_no [-o]
  311.           [int_level [io_addr [mem_base]]]
  312.  
  313.                The WD8003E driver runs the Western Digital E, EBT, EB,
  314.           ET/A, and E/A Ethernet cards.  The WD8003E requires three
  315.           additional parameters -- the hardware interrupt number, the I/O
  316.           address, and the memory base address.  The defaults are 2 and
  317.           0x280 and 0xd000.  The wd8003 cards do not enable their memory
  318.           until configuration time.  Some 386 memory mappers will map
  319.           memory into the area that the card intends to use.  You should
  320.           be able to configure your software to leave this area of memory
  321.           alone.  Also driver will refuse to map memory into occupied
  322.           memory.  The occupied memory test fails on some machines, so the
  323.           optional switch -o allows you to disable the check for occupied
  324.           memory.
  325.  
  326.  
  327.           Errorlevels
  328.  
  329.                Some of the packet drivers return error codes.  Some of
  330.           these error codes indicate fatal errors, and some are merely
  331.           warnings.  For the moment, you must consult the source to see
  332.           what the errorcodes mean.  For example, pktchk returns 0 if a
  333.           packet driver exists at a given address, and 1 if not.  You
  334.           might use it in a batch file that only installs a packet driver
  335.           if one is not found.
  336.  
  337.                   rem only install the packet driver if there isn't one
  338.                   rem already.
  339.                   pktchk 0x7e
  340.                   if errorlevel 0 goto gotit
  341.                   ni5210 0x7e
  342.           :gotit
  343.  
  344.                The "errorlevel" test is true if the errorlevel is less
  345.           than or equal to the parameter.
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.           Utility Programs
  353.  
  354.                There are also several utility programs for packet
  355.           drivers:
  356.  
  357.  
  358.           PKTADDR
  359.  
  360.                usage: pktaddr packet_int_no [ethernet_addr]
  361.  
  362.                If the second argument is given, the Ethernet address of
  363.           the given packet driver is set.  The Ethernet address is printed
  364.           out.
  365.  
  366.  
  367.           PKTALL
  368.  
  369.                usage: pktall packet_int_no
  370.  
  371.                All packets are received and discarded from the given
  372.           packet driver.  This program is of most use with PKTMODE and
  373.           TRACE.
  374.  
  375.  
  376.           PKTCHK
  377.  
  378.                usage: pktchk packet_int_no [packet_int_no]
  379.  
  380.                Test for existance of a packet driver.  Returns with
  381.           errorlevel 0 if the specified interrupt has a packet driver.  If
  382.           the second argument is given, all interrupts in the range are
  383.           checked for a packet driver.  If no packet driver is found at
  384.           all, errorlevel 1 is returned.
  385.  
  386.  
  387.           PKTMODE
  388.  
  389.                usage: pktmode packet_int_no [receive_mode]
  390.  
  391.                If the second argument is given, the receive mode of the
  392.           given packet driver is set.  A decimal number from the list of
  393.           modes should be used.  All the possible modes are printed out.
  394.           Unimplemented modes are marked with "xx", and the current mode
  395.           is marked with "->".
  396.  
  397.  
  398.           PKTMULTI
  399.  
  400.                usage: pktmulti packet_int_no [-f filename | address ...]
  401.  
  402.                The specified addresses are set as allowed multicast
  403.           addresses.  If no list of addresses is given, then the current
  404.           list of addresses is printed.  The
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.           addresses may either be specified on the command line, or in a
  412.           file using the -f option.  When a file is used, any whitespace
  413.           in the file is ignored.
  414.  
  415.  
  416.           PKTSTAT
  417.  
  418.                usage: pktstat first_int_no [last_int_no]
  419.  
  420.                The statistics for all packet drivers in the given range
  421.           are printed.  The default range is 0x60 through 0x80.  The
  422.           meanings of the columns are given below.
  423.  
  424.  
  425.           pkt_in  is the number of packets ever received by this driver.
  426.           pkt_out is the number of packets ever transmitted by this
  427.                   driver.
  428.           byt_in  is the number of bytes ever received by this driver.
  429.           byt_out is the number of bytes ever transmitted by this driver.
  430.           pk_drop Packets dropped because there was no handler for that
  431.                   Ethernet packet type.
  432.           err_in  Dependent upon the packet driver.
  433.           err_out Dependent upon the packet driver.
  434.  
  435.  
  436.           PKTSEND
  437.  
  438.                usage: pktsend packet_int_no [-r] [-f filename | packet]
  439.  
  440.                The specified packet is sent using the specified packet
  441.           driver.  The -r option says to repeat sending as fast as
  442.           possible.  You shouldn't use this option very often.  The packet
  443.           may either be specified on the command line, or in a file using
  444.           the -f option.  When a file is used, any whitespace in the file
  445.           is ignored.
  446.  
  447.  
  448.           TERMIN
  449.  
  450.                usage: termin [-s] packet_int_no
  451.  
  452.                The specified packet driver is terminated, and its memory
  453.           recovered.
  454.  
  455.                The s-option (stop) is used to prepare for termination.
  456.           The in-use flag for all handles are cleared. This prevents
  457.           upcalls to handlers that are to be removed and also makes it
  458.           possible to later terminate the packet driver even though
  459.           handles are not released.  Actually, doing termin -s after prom
  460.           boot is like cutting the branch you are sitting on.  Recipe for
  461.           removing packet driver, IPX and NET:
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.                   pktdrvr 0x7c ....
  469.                   MARKNET C:IPX&NET3.MRK
  470.                   PDIPX
  471.                   NET3
  472.                   . . .
  473.                   NET3 u                ; unload netx to avoid
  474.                                           communication timeout
  475.                   TERMIN -s 0x7c        ; pkt drvr no longer calls any
  476.                                           nonexistent rcvrs
  477.                   RELNET ipxet3.mrk     ; IPX is "removed"
  478.                   TERMIN 0x7c           ; It is now safe to terminate the
  479.                                           packet driver
  480.  
  481.  
  482.           TRACE
  483.  
  484.                usage: trace packet_int_no [buffer_size]
  485.  
  486.                Trace is very useful for debugging packet driver
  487.           troubles.  Trace lets you trace all transactions between a user
  488.           program and the packet driver.  The transactions are stored in a
  489.           memory buffer whose size is set with buffer_size.  The default
  490.           size is 10,000 bytes.
  491.  
  492.                When you run trace, it sets itself up and then spawns
  493.           COMMAND.COM so that you can run a network program that uses the
  494.           packet driver.  After you quit your network session, you issue
  495.           an "EXIT" command.  This returns you to trace, which writes the
  496.           transaction log to "TRACE.OUT".  The following program, DUMP,
  497.           interprets TRACE.OUT.
  498.  
  499.  
  500.           DUMP
  501.  
  502.                usage: dump
  503.  
  504.                Interprets the contents of TRACE.OUT as written by TRACE.
  505.  
  506.  
  507.           Who?
  508.  
  509.           See the file support.txt for a listing of all the people who
  510.           contributed packet drivers.
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.                                      Appendix A
  518.                    Interrupt usage in the range 0x60 through 0x80
  519.  
  520.  
  521.  
  522.           60 -- -- reserved for user interrupt
  523.           60 -- -- FTP Driver - PC/TCP Packet Driver Specification
  524.           60 01 FF FTP Driver - DRIVER INFO
  525.           60 02 -- FTP Driver - ACCESS TYPE
  526.           60 03 -- FTP Driver - RELEASE TYPE
  527.           60 04 -- FTP Driver - SEND PACKET
  528.           60 05 -- FTP Driver - TERMINATE DRIVER FOR HANDLE
  529.           60 06 -- FTP Driver - GET ADDRESS
  530.           60 07 -- FTP Driver - RESET INTERFACE
  531.           60 11 -- 10-NET - LOCK AND WAIT
  532.           60 12 -- 10-NET - LOCK
  533.           60 13 -- 10-NET - UNLOCK
  534.           60 20 -- FTP Driver - SET RECEIVE MODE
  535.           60 21 -- FTP Driver - GET RECEIVE MODE
  536.           60 24 -- FTP Driver - GET STATISTICS
  537.           61 -- -- reserved for user interrupt
  538.           62 -- -- reserved for user interrupt
  539.           63 -- -- reserved for user interrupt
  540.           64 -- -- reserved for user interrupt
  541.           65 -- -- reserved for user interrupt
  542.           66 -- -- reserved for user interrupt
  543.           67 -- -- LIM EMS
  544.                    ...
  545.           67 DE 00 Virtual Control Program Interface - INSTALLATION CHECK
  546.                    ...
  547.           68 01 -- APPC/PC
  548.                    ...
  549.           69 -- -- unused
  550.           6A -- -- unused
  551.           6B -- -- unused
  552.           6C -- -- system resume vector (CONVERTIBLE)
  553.           6C -- -- DOS 3.2 Realtime Clock update
  554.           6D -- -- VGA - internal
  555.           6E -- -- unused
  556.           6F -- -- Novell NetWare - PCOX API (3270 PC terminal interface)
  557.           6F 00 -- 10-NET - LOGIN
  558.                    ...
  559.           70 -- -- IRQ8 - AT/XT286/PS50+ - REAL-TIME CLOCK
  560.           71 -- -- IRQ9 - AT/XT286/PS50+ - LAN ADAPTER 1
  561.           72 -- -- IRQ10 - AT/XT286/PS50+ - RESERVED
  562.           73 -- -- IRQ11 - AT/XT286/PS50+ - RESERVED
  563.           74 -- -- IRQ12 - PS50+ - MOUSE INTERRUPT
  564.           75 -- -- IRQ13 - AT/XT286/PS50+ - 80287 ERROR
  565.           76 -- -- IRQ14 - AT/XT286/PS50+ - FIXED DISK
  566.           77 -- -- IRQ15 - AT/XT286/PS50+ - RESERVED
  567.           78 -- -- not used
  568.           79 -- -- not used
  569.           7A -- -- Novell NetWare - LOW-LEVEL API
  570.           7A -- -- AutoCAD Device Interface
  571.           7B -- -- not used
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.           7C -- -- not used
  579.           7D -- -- not used
  580.           7E -- -- not used
  581.           7F -- -- HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
  582.           7F -- -- HLLAPI (High-Level Language API)
  583.           80 -- -- reserved for BASIC
  584.